java
iphone
xml
ajax
python
mysql
xcode
objective-c
eclipse
silverlight
json
perl
algorithm
facebook
delphi
apache
mvc
asp
api
postgresql
You don't need to allocate_ids if you always construct keys in the manner you describe. It's only necessary when you expect to also allow the Datastore to create its own auto-incrementing numeric IDs.
allocate_ids
And yes, you are almost always better off with fewer fields and indices, so create the Key using the external unique ID value, as you describe.
Is there anything that prevents your turning the external id into a string, and use it as a key name?